home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / fb386 / lib / blb / menubar.blb < prev    next >
Text File  |  1995-02-15  |  7KB  |  144 lines

  1. 61600 '-------------------------- MENUBARルーチン Version 1.62 --------------------------------
  2. 61601 *BLB_MENUBAR_DRAW
  3. 61602  LINE(0,0)-(BLB_RESO_X-1,19),PSET,%7,BF:I%=0:J%=0:B%=0
  4. 61603  WHILE J%<BLB_MENUBAR%
  5. 61604   IF MENUBAR%(I%,0)=-1 THEN
  6. 61605    A%=MENUBAR%(I%,5):C%=MENUBAR%(I%,4):GOSUB *BLB_MENUBAR_BUTTONDRAW
  7. 61606    SYMBOL(B%+11,4),MENUBAR$(I%),.75!,.75!,7:B%=B%+C%:J%=J%+1
  8. 61607   ENDIF
  9. 61608   I%=I%+1
  10. 61609  WEND:BLB_MENUBAR_XLONG%=B%
  11. 61610  I%=0:WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND
  12. 61611  IF MENUBAR$(I%)="" THEN
  13. 61612   A$=   "0F0070FC0DC3CFF000F0FD0FC3FCF80DF0DF00008EC31963DC"
  14. 61613   A$=A$+"980000C30067069C99F0DF000007C79967CF8C00F800000000"
  15. 61614   A$=A$+"000000001CFB07C7F13CC08E4938C3983C0686F138C0A8718E"
  16. 61615   A$=A$+"C36118C0874138C16818FC8361F8DF5CE370C06118DF8100F0"
  17. 61616   BLB_MEM%(49)=0:FOR A%=0 TO 49:POKE VARPTR(BLB_MEM%(A%)),VAL("&H"+MID$(A$,A%*4+1,4)),2
  18. 61617   NEXT:PUT@(MENUBAR%(0,4)\2-34,5)-(MENUBAR%(0,4)\2+34,15),BLB_MEM%,,7
  19. 61618  ENDIF
  20. 61619  IF BLB_MENUEXIT%=1 THEN
  21. 61620   A%=8:B%=BLB_RESO_X-30:C%=19:GOSUB *BLB_MENUBAR_BUTTONDRAW
  22. 61621   LINE(B%+9,4)-(B%+11,16),PSET,7,BF:LINE(B%+5,15)-(B%+15,16),PSET,7,B
  23. 61622   CONNECT(B%+5,15)-(B%+5,8)-(B%+15,8)-(B%+15,15),%8
  24. 61623   LINE(B%+7,13)-(B%+13,14),PSET,7,B:LINE(B%+8,11)-(B%+12,12),PSET,7,B
  25. 61624  ENDIF
  26. 61625  RETURN
  27. 61626 *BLB_MENUBAR_BUTTONDRAW
  28. 61627  LINE(B%,0)-STEP(C%-1,19),PSET,%8,BF
  29. 61628  LINE(B%+2,2)-STEP(C%-5,15),PSET,%A%,BF
  30. 61629  A%=15:GOSUB *BLB_MENUBAR_BUTTON_FRAME:RETURN
  31. 61630 *BLB_MENUBAR_BUTTON_FRAME
  32. 61631  CONNECT(B%,19)-STEP(0,-19)-STEP(C%-1,0),%A%
  33. 61632  CONNECT(B%+1,18)-STEP(0,-17)-STEP(C%-3,0),%A%:RETURN
  34. 61633 *BLB_MENUBAR
  35. 61634  MB(0)=0:ERASE MB:DIM MB(9):FOR I%=0 TO 9:MB(I%)=-2:NEXT:BLB_MEM%(50)=0
  36. 61635  BLB_MX%=MOUSE(4,0):BLB_MY%=MOUSE(5,0):EXIT=0
  37. 61636  IF BLB_MX%>BLB_RESO_X-31 AND BLB_MX%<BLB_RESO_X-10 AND BLB_MY%<20 AND BLB_MENUEXIT%=1 THEN
  38. 61637   A%=0:I%=0:B%=BLB_RESO_X-30:C%=19
  39. 61638   WHILE MOUSE(2,0):BLB_MX%=MOUSE(0):BLB_MY%=MOUSE(1)
  40. 61639    A%=-(BLB_MX%>=B%)*(BLB_MX%<B%+20)*(BLB_MY%<20)
  41. 61640    IF A%<>I% THEN I%=A%:A%=15-A%*7:GOSUB *BLB_MENUBAR_BUTTON_FRAME
  42. 61641   WEND:EXIT=I%:A%=15:GOSUB *BLB_MENUBAR_BUTTON_FRAME:RETURN
  43. 61642  ENDIF
  44. 61643 *BLB_MENUBAR_MAIN
  45. 61644  BLB_MX%=MOUSE(4,0):BLB_MY%=MOUSE(5,0):GOSUB *BLB_MENUBAR_CHOSEN
  46. 61645  IF A%<0 THEN *BLB_MENUBAR_RESETRETURN
  47. 61646  IF MOUSE(2,0) THEN
  48. 61647   BLB_MX%=MOUSE(0):BLB_MY%=MOUSE(1):GOSUB *BLB_MENUBAR_CHOSEN
  49. 61648   IF A%<0 THEN
  50. 61649    IF MB(1)=-2 AND MB(0)>=0 THEN
  51. 61650     A%=0:GOSUB *BLB_MENUBAR_ERASE
  52. 61651    ELSE IF MB(0)>=0 THEN
  53. 61652     A%=SEARCH(MB,-2)-1:IF A%>0 THEN IF MB(A%)>=0 THEN GOSUB *BLB_MENUBAR_MARK:MB(A%)=-1
  54. 61653    ENDIF
  55. 61654    GOTO *BLB_MENUBAR_MAIN
  56. 61655   ENDIF
  57. 61656   IF A%=0 THEN
  58. 61657    IF MB(1)>=0 THEN A%=1:GOSUB *BLB_MENUBAR_MARK:A%=2:GOSUB *BLB_MENUBAR_ERASE:MB(1)=-1
  59. 61658    IF B%=MB(0) THEN *BLB_MENUBAR_MAIN
  60. 61659    A%=0:GOSUB *BLB_MENUBAR_ERASE:MB(0)=B%
  61. 61660    A%=0:I%=0:WHILE A%=<B%:WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND:A%=A%+1:I%=I%+1:WEND
  62. 61661    I%=I%-1:GOSUB *BLB_MENUBAR_BTNDWN:A%=0:IF MENUBAR%(I%,2)>0 THEN GOSUB *BLB_MENUBAR_PULDWN
  63. 61662   ELSE
  64. 61663    IF B%=MB(A%) THEN *BLB_MENUBAR_MAIN
  65. 61664    IF MB(A%)<>-1 THEN GOSUB *BLB_MENUBAR_MARK
  66. 61665    IF MENUBAR%(BLB_MEM%(A%*5)+B%,0)=0 THEN B%=-1
  67. 61666    MB(A%)=B%:IF B%>=0 THEN GOSUB *BLB_MENUBAR_MARK
  68. 61667    I%=A%-1:A%=A%+1:GOSUB *BLB_MENUBAR_ERASE:A%=I%+1
  69. 61668    IF MB(A%)>=0 AND MENUBAR%(BLB_MEM%(A%*5)+MB(A%),2)>0 THEN GOSUB *BLB_MENUBAR_PULDWN
  70. 61669   ENDIF
  71. 61670   GOTO *BLB_MENUBAR_MAIN
  72. 61671  ELSE
  73. 61672   BLB_MX%=MOUSE(7,0):BLB_MY%=MOUSE(8,0):GOSUB *BLB_MENUBAR_CHOSEN
  74. 61673   IF A%<0 THEN *BLB_MENUBAR_RESETRETURN
  75. 61674   IF A%=0 THEN
  76. 61675    I%=0:WHILE A%=<B%:WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND:A%=A%+1:I%=I%+1:WEND
  77. 61676    IF MENUBAR%(I%-1,2)=0 THEN A%=0:GOSUB *BLB_MENUBAR_ERASE2:RETURN
  78. 61677   ELSE
  79. 61678    IF SEARCH(MB,-1)>=0 THEN
  80. 61679     IF MENUBAR%(BLB_MEM%(A%*5)+B%,0)=0 THEN *BLB_MENUBAR_RESETRETURN
  81. 61680    ELSE
  82. 61681     A%=0:GOSUB *BLB_MENUBAR_ERASE2:RETURN
  83. 61682    ENDIF
  84. 61683   ENDIF
  85. 61684  ENDIF
  86. 61685  GOTO *BLB_MENUBAR_MAIN
  87. 61686 *BLB_MENUBAR_CHOSEN
  88. 61687  IF BLB_MX%<BLB_MENUBAR_XLONG% AND BLB_MY%<20 THEN
  89. 61688   B%=-1:I%=0:WHILE BLB_MX%>=0
  90. 61689    WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND:B%=B%+1
  91. 61690    BLB_MX%=BLB_MX%-MENUBAR%(I%,4):I%=I%+1:WEND:A%=0:RETURN
  92. 61691  ENDIF
  93. 61692  I%=1:A%=-1
  94. 61693  WHILE I%=<SEARCH(MB,-2)-1
  95. 61694   IF BLB_MX%>=BLB_MEM%(I%*5+1) AND BLB_MX%=<BLB_MEM%(I%*5+3) AND BLB_MY%>=BLB_MEM%(I%*5+2) AND BLB_MY%<BLB_MEM%(I%*5+4)-1 THEN
  96. 61695    A%=I%:B%=(BLB_MY%-BLB_MEM%(I%*5+2))\16:I%=9
  97. 61696   ENDIF
  98. 61697  I%=I%+1:WEND:RETURN
  99. 61698 *BLB_MENUBAR_ERASE
  100. 61699  WHILE A%<SEARCH(MB,-2,A%)
  101. 61700   PUT@A(BLB_MEM%(A%*5+1),BLB_MEM%(A%*5+2))-(BLB_MEM%(A%*5+3),BLB_MEM%(A%*5+4)),BLB_MEM%,,,,,BLB_MEM%(50+A%)*100+60
  102. 61701   MB(A%)=-2:A%=A%+1:WEND:RETURN
  103. 61702 *BLB_MENUBAR_ERASE2
  104. 61703  WHILE A%<SEARCH(MB,-2)
  105. 61704   PUT@A(BLB_MEM%(A%*5+1),BLB_MEM%(A%*5+2))-(BLB_MEM%(A%*5+3),BLB_MEM%(A%*5+4)),BLB_MEM%,,,,,BLB_MEM%(50+A%)*100+60
  106. 61705  A%=A%+1:WEND:RETURN
  107. 61706 *BLB_MENUBAR_RESETRETURN
  108. 61707  A%=0:GOSUB *BLB_MENUBAR_ERASE:RETURN
  109. 61708 *BLB_MENUBAR_MARK
  110. 61709  LINE(BLB_MEM%(A%*5+1)+1,BLB_MEM%(A%*5+2)+1+MB(A%)*16)-(BLB_MEM%(A%*5+3)-2,BLB_MEM%(A%*5+2)+15+MB(A%)*16),XOR,%7,BF:RETURN
  111. 61710 *BLB_MENUBAR_PULDWN
  112. 61711  IF A%=0 THEN
  113. 61712   BLB_MX%=BLB_MEM%(1):BLB_MY%=20:BLB_MEM%(5)=MENUBAR%(I%,1)
  114. 61713   BLB_MEM%(51)=(MENUBAR%(I%,3)+1)\20
  115. 61714  ELSE
  116. 61715   BLB_MX%=BLB_MEM%(A%*5+3)+1:BLB_MY%=BLB_MEM%(A%*5+2)+MB(A%)*16
  117. 61716   I%=BLB_MEM%(A%*5)+MB(A%):BLB_MEM%(A%*5+5)=MENUBAR%(I%,1)
  118. 61717  ENDIF
  119. 61718  MOUSE 1,,,0:BLB_MEM%(A%*5+6)=BLB_MX%:BLB_MEM%(A%*5+7)=BLB_MY%
  120. 61719  BLB_MEM%(A%*5+8)=BLB_MX%+MENUBAR%(I%,3)-1:BLB_MEM%(A%*5+9)=BLB_MY%+MENUBAR%(I%,2)*16+1
  121. 61720  BLB_MEM%(52+A%)=(MENUBAR%(I%,3)+1)*(MENUBAR%(I%,2)*16+2)\400+BLB_MEM%(51+A%)+4:MB(A%+1)=-1
  122. 61721  GET@A(BLB_MX%,BLB_MY%)-(BLB_MEM%(A%*5+8),BLB_MEM%(A%*5+9)),BLB_MEM,BLB_MEM%(51+A%)*100+60
  123. 61722  LINE(BLB_MX%,BLB_MY%)-(BLB_MEM%(A%*5+8),BLB_MEM%(A%*5+9)),PSET,%8,B
  124. 61723  LINE(BLB_MX%,BLB_MY%)-(BLB_MEM%(A%*5+8)-1,BLB_MEM%(A%*5+9)-1),PSET,%8,BF,7
  125. 61724  FOR I%=0 TO MENUBAR%(I%,2)-1
  126. 61725   A$=MENUBAR$(BLB_MEM%(A%*5+5)+I%)
  127. 61726   IF A$="" THEN
  128. 61727    LINE(BLB_MX%+4,BLB_MY%+7+I%*16)-STEP(BLB_MEM%(A%*5+8)-9-BLB_MX%,0),PSET,%8
  129. 61728   ELSE
  130. 61729    SYMBOL(BLB_MX%+8,BLB_MY%+I%*16+3),A$,.75!,.75!,%8+2*(MENUBAR%(I%+BLB_MEM%(A%*5+5),0)=0)
  131. 61730    IF MENUBAR%(BLB_MEM%(A%*5+5)+I%,2)>0 THEN
  132. 61731     CONNECT(BLB_MEM%(A%*5+8)-10,BLB_MY%+I%*16+2)-STEP(6,6)-STEP(-6,6),7,,F,%8+2*(MENUBAR%(I%+BLB_MEM%(A%*5+5),0)=0)
  133. 61732    ENDIF
  134. 61733   ENDIF
  135. 61734  NEXT:MOUSE 1,,,1:RETURN
  136. 61735 *BLB_MENUBAR_BTNDWN
  137. 61736  A%=0:B%=0:WHILE A%<I%:IF MENUBAR%(A%,0)=-1 THEN B%=B%+MENUBAR%(A%,4)
  138. 61737  A%=A%+1:WEND:A%=A%-1
  139. 61738  GET@A(B%,0)-(B%+MENUBAR%(I%,4)-1,19),BLB_MEM%,60
  140. 61739  BLB_MEM%(1)=B%:BLB_MEM%(2)=0:BLB_MEM%(3)=B%+MENUBAR%(I%,4)-1:BLB_MEM%(4)=19
  141. 61740  BLB_MEM%(51)=((MENUBAR(I%,4)+1)\2)*20/2/100
  142. 61741  LINE(B%,0)-STEP(MENUBAR%(I%,4)-1,19),PSET,%MENUBAR%(I%,5),B
  143. 61742  LINE(B%+1,1)-STEP(MENUBAR%(I%,4)-3,17),PSET,%MENUBAR%(I%,5),B:RETURN
  144.